<?php

namespace Application\Model\Entity;

use Zend\Db\Adapter\Adapter;


class VerificadorRequisitos
{   
        private $mesa_entrada;
	private $adapt_transacciones;
        private $adapt_sapientia;
	private $cedula_alumno;
        

	public function __construct($mesa_entrada, $cedula_alumno, $adapt_transacciones, $adapt_sapientia)
	{
		$this->mesa_entrada = $mesa_entrada;
                $this->adapt_transacciones = $adapt_transacciones;
                $this->adapt_sapientia = $adapt_sapientia;
                $this->cedula_alumno = $cedula_alumno;
		/**print_r($this->mesa_entrada);
		print_r($this->cedula_alumno);
		print_r($this->adapt_transacciones);
		print_r($this->adapt_sapientia);**/
	}

	public function VerificarRequisitos()
	{		
            //Las sgtes consultas son todas a la BD transacciones
                $fecha_solicitud=$this->adapt_transacciones->query("select fecha_de_redaccion from formularios where mesa_entrada = '$this->mesa_entrada'",Adapter::QUERY_MODE_EXECUTE); 
                $fecha_solicitud=$fecha_solicitud->toArray(); 

                $tipo_solicitud=$this->adapt_transacciones->query("select nombre_tipo_solicitud, id_tipo_solicitud from tipo_de_solicitud where id_tipo_solicitud = (select id_tipo_solicitud from solicitud_realizada where mesa_entrada = '$this->mesa_entrada')",Adapter::QUERY_MODE_EXECUTE);
                $tipo_solicitud=$tipo_solicitud->toArray();                 
                $nomb_tipo_sol = $tipo_solicitud[0][nombre_tipo_solicitud];
                $id_tipo_sol = $tipo_solicitud[0][id_tipo_solicitud];
                //print_r($id_tipo_sol);
                $datos_formulario = $this->adapt_transacciones->query("select * from $nomb_tipo_sol where mesa_entrada = '$this->mesa_entrada'",Adapter::QUERY_MODE_EXECUTE);
                $datos_formulario=$datos_formulario->toArray(); 
                $datos_formulario = $datos_formulario[0];
                //print_r($datos_formulario);
                $id_tipo_sol = 6;
                $requisitos=$this->adapt_transacciones->query("select descripcion from tipo_de_requisito as t INNER JOIN requisitos_x_tipo_solicitud as r ON (t.id_tipo_requisito = r.id_tipo_requisito) where r.id_tipo_solicitud = '$id_tipo_sol'",Adapter::QUERY_MODE_EXECUTE);
                $requisitos=$requisitos->toArray();         
        	//print_r($requisitos);
                $true = 'Requisito cumplido';
                $false = 'Requisito no cumplido';
                $otro = 'No incluye';
                $indice = 0;
                
                if ($requisitos <> null) { //exsten requisitos para la solicitud
		        if ($id_tipo_sol == 14){//Examen Extraordinario
		                        //print_r($datos_formulario[codigo_materia]);
		        //Las sgtes consultas son todas a la BD sapientia                     
		            $id_curso = $this->adapt_sapientia->query("select id_curso from curso where "
		                    . "     codigo_materia = $datos_formulario[codigo_materia] and anho = 2014 and periodo = 1",Adapter::QUERY_MODE_EXECUTE);
		            $id_curso=$id_curso->toArray(); 

			    if ($id_curso <> null){
				    $id_curso = $id_curso[0][id_curso];
				       //print_r($id_curso);
				    $id_examen = $this->adapt_sapientia->query("select id_examen, fecha from examen where "
				            . "     id_curso = $id_curso and oportunidad = '3'",Adapter::QUERY_MODE_EXECUTE);
				    $id_examen=$id_examen->toArray();   
				    $fecha_3Op = $id_examen[0][fecha];
				    $id_examen = $id_examen[0][id_examen];
				    
				    $inscripcion = $this->adapt_sapientia->query("select * from examen_alumno where "
				            . "     id_examen = $id_examen and cedula = $this->cedula_alumno and oportunidad = '3'",Adapter::QUERY_MODE_EXECUTE);
				    $inscripcion=$inscripcion->toArray();                    
				    if ($inscripcion == null) {
				        $cumplimiento[$indice] = $false;
				        $indice = $indice + 1;
				        $cumplimiento[$indice] = $otro;  
				    }else{
				        $cumplimiento[$indice] = $true;
				        $indice = $indice + 1;
				       
				        $presencia = $inscripcion[0][presencia];
				        if ($presencia == 0) $cumplimiento[$indice] = $true;                        
				    } 
		
			    $indice = $indice + 1;
		            if ($datos_formulario[tipo_documento_anexo] <> 'Ninguno') $cumplimiento[$indice] = $true;
		            else $cumplimiento[$indice] = $false;  
		            
			    $indice = $indice + 1;                                        
		            $dias_transcurridos = (strtotime($fecha_3Op)-strtotime($fecha_solicitud[0][fecha_de_redaccion]))/86400;
		            $dias_transcurridos = abs($dias_transcurridos);
		            $dias_transcurridos = floor($dias_transcurridos);                    
		            
				if ($dias_transcurridos <= 5) $cumplimiento[$indice] = $true;
		            else $cumplimiento[$indice] = $false.'. Han transcurrido: '.$dias_transcurridos.' dias';                                       
		               }else{                       
				     $cumplimiento[$indice] = $otro;
				     $indice = $indice + 1;
				     $cumplimiento[$indice] = $otro;
				     $indice = $indice + 1;
				     $cumplimiento[$indice] = $otro; 
				     $indice = $indice + 1;
				     $cumplimiento[$indice] = $otro;  
			       }         
		                                                   
		        }elseif($id_tipo_sol == 4){ //titulo UNiversitario
		        	if (True){ //ver que carreras tiene tesis $_SESSION['carrera']
		        		$mat = $this->adapt_transacciones->query("select matricula from solicitud_realizada where mesa_entrada = '$this->mesa_entrada'",Adapter::QUERY_MODE_EXECUTE);
		        		$mat = $mat->toArray();	 
		        		$mat = $mat[0][matricula];		        
		        		$tesis_presentada = $this->adapt_sapientia->query("select nota_tesis from tesis_x_alumno where "
		                    . "     matricula = $mat",Adapter::QUERY_MODE_EXECUTE);
		                    	$tesis_presentada=$tesis_presentada->toArray();
		                    if ($tesis_presentada <> null){
		                    	if ($tesis_presentada > 1){ //ya aprobo la tesis		                
				     		$cumplimiento[$indice] = "Tesis aprobada con nota: ".$tesis_presentada[nota_tesis]; 
		                    	}else{
		                    		$cumplimiento[$indice] = "Tesis reprobada";
		                    	}
		                    }else{
		                    	$cumplimiento[$indice] = "Tesis no presentada";
		                    }
		        	}
		        	
		        }elseif($id_tipo_sol == 6){ //tomar materia fuera de malla curricular
				$cant_alumnos = $this->adapt_sapientia->query("select cantidad_alumnos from curso where "
				            . "     codigo_materia = $datos_formulario[codigo_materia] and anho = 2014 and periodo = 1",Adapter::QUERY_MODE_EXECUTE);
				$cant_alumnos=$cant_alumnos->toArray();
				$cumplimiento[$indice] = $cant_alumnos[0][cantidad_alumnos];
                           
                        }elseif($id_tipo_sol == 17){ //Ruptura de Correlatividad
                                session_start();
                                $carrera = $_SESSION['carrera'];
                                $departamento = $this->adapt_sapientia->query("select d.id_departamento from departamento as d INNER JOIN carrera as c 
                                                                               ON d.id_departamento = c.id_departamento and c.nombre = $carrera",Adapter::QUERY_MODE_EXECUTE);
                                $departamento = $departamento->toArray();
                                $departamento = $departamento[0][id_departamento];
                      
                                $mat = $this->adapt_transacciones->query("select matricula from solicitud_realizada where mesa_entrada = '$this->mesa_entrada'",Adapter::QUERY_MODE_EXECUTE);
                                $mat = $mat->toArray();	 
                                $mat = $mat[0][matricula];
                                        
                                if ($departamento == '1'){
                                    
                                }
                                
                        }elseif($id_tipo_sol == 18){ //Reduccion de Asistencia
                            
                        }elseif($id_tipo_sol == 22){ //Exoneracion de Asistencia
                            
                        }
		 }else{       
		 	$requisitos[0][descripcion] = "No hay requisitos que mostrar";
		 	$cumplimiento[0] = "No hay requisitos que mostrar";
		 }
		 //print_r($requisitos);
                 $verificacion=array
                (           
                    "requisitos"=>$requisitos,
                    "estado"=>$cumplimiento
                );
		return $verificacion;
	}
}
